package interfaz;

import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JInternalFrame;

import modelo.Aula;
import modelo.CentroEstudios;
import modelo.Equipo;
import modelo.Software;
import modelo.Solicitud;
import modelo.Usuario;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class VAnadirSolicitud extends JInternalFrame {
	
	private CentroEstudios centroEstudios; 
	private JTextField txtNumSol;
	private JTextArea txtObservaciones;
	private JComboBox cmbSoft;
	private JComboBox cmbEquipo;
	private JComboBox cmbAulas;
	private JRadioButton rdbtnEquipo;
	private JRadioButton rdbtnAula;
	private Vector<Equipo> vEquipos;
	private Vector<Software> vSoftwares;
	private Vector<Aula> vAulas;
	private Usuario usu;


	public VAnadirSolicitud(CentroEstudios centroEstudios, Usuario usu) {
		this.centroEstudios = centroEstudios;
		this.usu = usu;
		vEquipos = this.centroEstudios.vEquipos;
		vSoftwares = this.centroEstudios.vSoftwares;
		vAulas = this.centroEstudios.vAulas;
		
		setTitle("Nueva solicitud");
		setClosable(true);
		setBounds(100, 100, 450, 395);
		getContentPane().setLayout(null);
		
		JLabel lblNumSol = new JLabel("Número de solicitud:");
		lblNumSol.setBounds(48, 68, 146, 15);
		getContentPane().add(lblNumSol);
		
		txtNumSol = new JTextField();
		txtNumSol.setBounds(212, 66, 58, 19);
		generarCodigo();
		getContentPane().add(txtNumSol);
		txtNumSol.setColumns(10);
		
		JLabel lblEquipo = new JLabel("Equipo:");
		lblEquipo.setBounds(48, 129, 70, 15);
		getContentPane().add(lblEquipo);
		
		cmbEquipo = new JComboBox(vEquipos);
		cmbEquipo.setBounds(212, 124, 181, 24);
		cmbEquipo.setEnabled(false);
		getContentPane().add(cmbEquipo);
		
		JLabel lblAula = new JLabel("Aula:");
		lblAula.setBounds(48, 95, 70, 15);
		getContentPane().add(lblAula);
		
		cmbAulas = new JComboBox(vAulas);
		cmbAulas.setBounds(211, 90, 182, 24);
		cmbAulas.setEnabled(false);
		getContentPane().add(cmbAulas);
		
		JLabel lblSoftware = new JLabel("Software:");
		lblSoftware.setBounds(48, 165, 70, 15);
		getContentPane().add(lblSoftware);
		
		cmbSoft = new JComboBox(vSoftwares);
		cmbSoft.setBounds(212, 160, 181, 24);
		getContentPane().add(cmbSoft);
		
		JLabel lblObservaciones = new JLabel("Observaciones:");
		lblObservaciones.setBounds(48, 192, 110, 15);
		getContentPane().add(lblObservaciones);
		
		txtObservaciones = new JTextArea();
		txtObservaciones.setBounds(212, 192, 181, 104);
		getContentPane().add(txtObservaciones);
		
		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Solicitud solicitud;
				if (rdbtnAula.isSelected()){
					//Solicitud para aula
					solicitud = new Solicitud(txtNumSol.getText(), vSoftwares.elementAt(cmbSoft.getSelectedIndex()),
											vAulas.elementAt(cmbAulas.getSelectedIndex()), VAnadirSolicitud.this.usu, txtObservaciones.getText());
				}else{
					//Solicitud para equipo
					solicitud = new Solicitud(txtNumSol.getText(), vSoftwares.elementAt(cmbSoft.getSelectedIndex()), 
												vEquipos.elementAt(cmbEquipo.getSelectedIndex()), VAnadirSolicitud.this.usu, 
												txtObservaciones.getText());	
				}
				try {
					VAnadirSolicitud.this.centroEstudios.crearSolicitud(solicitud);
					JOptionPane.showMessageDialog(null, "Solicitud creada correctamente.","Solicitudes",JOptionPane.INFORMATION_MESSAGE);
				} catch (SQLException e) {
					e.printStackTrace();
					JOptionPane.showMessageDialog(null, "No se ha podido crear la solictud.","Solicitud",JOptionPane.ERROR_MESSAGE);
				}
			}
		});
		btnAceptar.setBounds(184, 315, 117, 25);
		getContentPane().add(btnAceptar);
		
		JLabel lblTipoDeSolicitud = new JLabel("Tipo de solicitud:");
		lblTipoDeSolicitud.setBounds(48, 12, 146, 15);
		getContentPane().add(lblTipoDeSolicitud);
		
		rdbtnAula = new JRadioButton("Aula");
		rdbtnAula.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				rdbtnEquipo.setSelected(false);
				cmbEquipo.setEnabled(false);
				cmbAulas.setEnabled(true);
			}
		});
		rdbtnAula.setBounds(212, 8, 70, 23);
		getContentPane().add(rdbtnAula);
		
		rdbtnEquipo = new JRadioButton("Equipo");
		rdbtnEquipo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				rdbtnAula.setSelected(false);
				cmbEquipo.setEnabled(true);
				cmbAulas.setEnabled(false);
			}
		});
		rdbtnEquipo.setBounds(301, 8, 73, 23);
		getContentPane().add(rdbtnEquipo);

	}
	
	private void generarCodigo() {
		int codigo = 0;
		try {
			codigo = centroEstudios.generarCodigo("SOLICITUDES");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		txtNumSol.setText(Integer.toString(codigo));
	}
}
